$(document).ready(function(){
	
	"use strict";
	
	
	/* Global Variables */
	
	var window_w = $(window).width(); // Window Width
	var window_h = $(window).height(); // Window Height
	var window_s = $(window).scrollTop(); // Window Scroll Top
	
	var $html = $('html'); // HTML
	var $body = $('body'); // Body 
	
	
	// On Resize
	$(window).resize(function(){
		
		window_w = $(window).width();
		window_h = $(window).height();
		window_s = $(window).scrollTop();
		
	});
	
	// On Scroll
	$(window).scroll(function(){
	
		window_s = $(window).scrollTop();
		
	});
	
	
	
	/* Functions Calls */
	
	enableBackToTop(); // Back to top button
	
	enableFlexSlider (); // Enable Flexslider
	
	enableFormValidator(); // Form Validator
	
	enableSelectBoxIt(); // Custom Select Boxes
	
	enableCustomFile() // Custom File Inputs
	
	
	
	/* Functions Declarations */
	
	// Back to top button
	function enableBackToTop(){
		
		$('#back-to-top').click(function(e){
			
			e.preventDefault();
			
			$('body, html').animate({scrollTop:0}, 400);
			
		});
		
	}
	
	
	
	// FlexSlider
	function enableFlexSlider () {
	
		$('.heading-slider').flexslider({
			animation: "slide",  // slide or fade
		});
	
	}
	
	
	
	
	// Form Validator
	function enableFormValidator(){
		
		// Validate Email
		function validateEmail(input) { 
			var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
			return re.test(input);
		} 
		
		// Validate NotEmpty
		function validateNotEmpty(input){
			var length = input.length;
			if(length > 0)
				return true;
			else
				return false;
		}
		
		// Input Validate Email
		function input_validateEmail(el){
			
			var input = el;
			
			if(validateEmail(input.val())){
				
				if(input.data('error') == true){
					input.next('p').remove();
					input.data('error', false);
				}
				
			}else{
				var input_w = input.width() + 20;
				var input_top = input.position().top + 10;
				
				if(input.data('error') != true){
					input.after('<p style="color:#FF0000; white-space:nowrap; position:absolute; top:'+input_top+'px; left:'+input_w+'px" class="error-msg">* error, email invalid</p>');
					input.data('error', true);
				}
				
			}
			
		}
		
		// Input Validate Required
		function input_validateRequired(el){
		
			var input = el;
			
			if(validateNotEmpty(input.val())){
				
				if(input.data('error') == true){
					input.next('p').remove();
					input.data('error', false);
				}
				
			}else{
			
				var input_w = input.width() + 20;
				var input_top = input.position().top + 10;
				
				if(input.data('error') != true){
					input.after('<p style="color:#FF0000; white-space:nowrap; position:absolute; top:'+input_top+'px; left:'+input_w+'px" class="error-msg">* error if not type</p>');
					input.data('error', true);
				}
				
			}
			
		}
		
		// Required Inputs
		$('.validate-required').blur(function(){
				
		    var input = $(this);
			input_validateRequired(input);
			
		});
		
		// Email Inputs
		$('.validate-email').blur(function(){
				
		    var input = $(this);
			input_validateEmail(input);
			
		});
		
		// Form Submits
		$('form').submit(function(e){
		
			var errors = false;
			
			$('.validate-required', $(this)).each(function(){
				var input = $(this);
				input_validateRequired(input);
			});
			
			$('.validate-email', $(this)).each(function(){
				var input = $(this);
				input_validateEmail(input);
			});
			
			$('.validate-required, .validate-email', $(this)).each(function(){
				
				if($(this).data('error') == true)
					errors = true;
				
			});
			
			if(errors == true)
				e.preventDefault();
			
		});
		
		
	}
	
	
	
	
	
	// Custom Select Boxes 
	function enableSelectBoxIt(){
		
		$("select").selectBoxIt();
		
	}
	
	
	
	
	
	
	// Custom File
	function enableCustomFile(){
		
		$('.input-file').each(function(){
			
			// On File Change Update Output
			$($(this).data('file')).hide().data('output',$(this).data('input')).change(function(){
				
				var output_element = $($(this).data('output'));
				
				if(output_element.is('input'))
					output_element.val($(this).val());
				else
					output_element.text($(this).val());
				
			});
			
			// Trigger File Upload On Click
			$(this).click(function(e){
			
				e.preventDefault();
				var file_input = $(this).data('file');
				var file_output = $(this).data('input');
				
				$(file_input).trigger('click');
			
			});
			
		});
		
	}
	
	
	
});